package cn.yh.shop.util;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

/**
 * @Description:Redis工具类,jedis实例，通过pool.getResource()来获取
 * @author:李战召
 * @time:2016年12月16日 下午7:36:17
 */
public class RedisUtils {

	 /**
	 * @Description: pool : 生命pool对象
	 */
	private static JedisPool pool = null;  
	    /** 
	     * 构建redis连接池 
	     *  
	     * @param ip 
	     * @param port 
	     * @return JedisPool 
	     */  
	    public static JedisPool getPool() {  
	        if (pool == null) {  
	            JedisPoolConfig config = new JedisPoolConfig();  
	            //如果赋值为-1，则表示不限制；如果pool已经分配了maxActive个jedis实例，则此时pool的状态为exhausted(耗尽)。  
	            config.setMaxActive(500);  
	            //控制一个pool最多有多少个状态为idle(空闲的)的jedis实例。  
	            config.setMaxIdle(5);  
	            //表示当borrow(引入)一个jedis实例时，最大的等待时间，如果超过等待时间，则直接抛出JedisConnectionException；  
	            config.setMaxWait(1000 * 100);  
	            //在borrow一个jedis实例时，是否提前进行validate操作；如果为true，则得到的jedis实例均是可用的；  
	            config.setTestOnBorrow(true);  
	            pool = new JedisPool(config, "172.16.5.116", 6379);  
	        }  
	        return pool;  
	    }  
	      
	    /** 
	     * 返还到连接池 
	     *  
	     * @param pool  
	     * @param redis 
	     */  
	    public static void returnResource(JedisPool pool, Jedis redis) {  
	        if (redis != null) {  
	            pool.returnResource(redis);  
	        }  
	    }  
	      
}
